Introduction
Sometimes, simplicity is the most beautiful thing. This tutorial uses images and jQuery animate plus backgroundPosition Plugin to make the flipping/rotating effect. This will be a simple tutorial and I believe it has a great potential to become something really creative. Check out the demo and I hope you all will like it.
1. HTML
As usual, we want to keep the HTML as simple as possible. I guess this is the minimal code for a menu.
<b>Horizontal Menu</b> <ul id="hor"> <li><a href="#" class="home">Home</a></li> <li><a href="#" class="download">Download</a></li> <li><a href="#" class="contact">Contact</a></li> </ul> <div class="clear"></div> <br/><br/> <b>Vertical Menu</b> <ul id="ver"> <li><a href="#" class="home">Home</a></li> <li><a href="#" class="download">Download</a></li> <li><a href="#" class="contact">Contact</a></li> </ul>
2. CSS
This time, we don't have to do much with the CSS. The following is just a simple configuration of a menu. With a little bi of CSS Sprites used for the menu images, the rest are just basic CSS.
/* CSS Style for Horizontal Menu */
#hor {
list-style:none;
padding:0;
margin:0;
}
#hor li {
float:left;
padding:5px;
}
#hor a {
display:block;
height: 12px;
text-indent:-999em;
}
#hor a.home {
width:46px;
background:url(vHome.gif) no-repeat 0 0;
}
#hor a.download {
width:94px;
background:url(vDownload.gif) no-repeat 0 0;
}
#hor a.contact {
width:74px;
background:url(vContact.gif) no-repeat 0 0;
}
/* CSS Style for Vertical Menu */
#ver {
list-style:none;
padding:0;
margin:0;
}
#ver li {
padding:2px;
}
#ver li a {
display:block;
height:12px;
text-indent:-999em;
}
#ver a.home {
width:47px;
background:url(hHome.gif) no-repeat 0 0;
}
#ver a.download {
width:95px;
background:url(hDownload.gif) no-repeat 0 0;
}
#ver a.contact {
width:74px;
background:url(hContact.gif) no-repeat 0 0;
}
.clear {
clear:both;
}
3. Javascript
With the background position jquery plugin, what we need to do is to set the backgroundPosition properties to the right top and left value.
$(document).ready(function () {
/* Horizontal Menu */
$('#hor li a').hover(
function () {
//convert current height to negative value
height = $(this).height() * (-1);
$(this).stop().animate({'backgroundPosition':'(0 ' + height + ')'}, {duration:200});
},
function () {
//reset the top position
$(this).stop().animate({'backgroundPosition':'(0 0)'}, {duration:200});
}
);
/* Vertical Menu*/
$('#ver li a').hover(
function () {
//convert current width to negative value
width = $(this).width() * (-1);
$(this).stop().animate({'backgroundPosition':'(' + width + ' 0)'}, {duration:200});
},
function () {
//reset the left position
$(this).stop().animate({'backgroundPosition':'(0 0)'}, {duration:200});
}
);
});
Conclusion
Like this tutorials? You can express your gratitude by visiting my sponsors on the sidebar, buy me a drink in the bottom of the page or, just bookmark it and help me to spread this tutorial to the rest of the people who you think they are interested! :) Thanks!

Comments will be moderated and
rel="nofollow"will be added to all links. You can wrap your coding with[code][/code]to make use of built-in syntax highlighter.Can you tell what is the name of the font used for the images?
Regards,
http://www.protofunc.com/scripts/jquery/backgroundPosition/
https://github.com/grimmdude/jQuery-menuFlip
-G
coz in 1.8+ min.js no backgroundPosition function.
Thx.
So, it should work well with jQuery 1.8.1 too. Please check if there's any conflict or javascript error in your console.